草庐IT

Javascript toFixed 不舍入

全部标签

c# - 为什么 .NET decimal.ToString(string) 从零舍入,显然与语言规范不一致?

我看到,在C#中,舍入decimal,默认情况下,使用MidpointRounding.ToEven.这是预期的,也是C#规范的规定。但是,鉴于以下情况:AdecimaldVal格式stringsFmt那,当传递给dVal.ToString(sFmt),将导致包含dVal的四舍五入版本的字符串...很明显decimal.ToString(string)返回使用MidpointRounding.AwayFromZero四舍五入的值.这似乎与C#规范直接矛盾。我的问题是:出现这种情况是否有充分的理由?或者这只是语言上的不一致?下面,作为引用,我包含了一些代码,用于控制各种舍入操作结果和de

c# - 在 C# 中是否有更好的方法将 DateTime 舍入到最接近的 5 秒?

我想将DateTime舍入到最接近的5秒。这是我目前正在做的方式,但我想知道是否有更好或更简洁的方式?DateTimenow=DateTime.Now;intsecond=0;//roundtonearest5secondmarkif(now.Second%5>2.5){//roundupsecond=now.Second+(5-(now.Second%5));}else{//rounddownsecond=now.Second-(now.Second%5);}DateTimerounded=newDateTime(now.Year,now.Month,now.Day,now.Hour

c# - 在 C# 中是否有更好的方法将 DateTime 舍入到最接近的 5 秒?

我想将DateTime舍入到最接近的5秒。这是我目前正在做的方式,但我想知道是否有更好或更简洁的方式?DateTimenow=DateTime.Now;intsecond=0;//roundtonearest5secondmarkif(now.Second%5>2.5){//roundupsecond=now.Second+(5-(now.Second%5));}else{//rounddownsecond=now.Second-(now.Second%5);}DateTimerounded=newDateTime(now.Year,now.Month,now.Day,now.Hour

c# - 如何在 C# 中向上或向下舍入?

我尝试过使用Math.Round和MidpointRounding。这似乎没有满足我的需要。例子:52.34567roundedto2decimalsUP=52.351.183roundedto2decimalsDOWN=1.18我需要编写自定义函数吗?编辑:我应该更具体一些。有时我需要像23.567这样的数字来向下舍入到23.56。在这种情况下...Math.Round(dec,2,MidpointRounding.AwayFromZero)gives23.57Math.Round(dec,2,MidpointRounding.ToEven)gives23.579位小数可能会出来,需

c# - 如何在 C# 中向上或向下舍入?

我尝试过使用Math.Round和MidpointRounding。这似乎没有满足我的需要。例子:52.34567roundedto2decimalsUP=52.351.183roundedto2decimalsDOWN=1.18我需要编写自定义函数吗?编辑:我应该更具体一些。有时我需要像23.567这样的数字来向下舍入到23.56。在这种情况下...Math.Round(dec,2,MidpointRounding.AwayFromZero)gives23.57Math.Round(dec,2,MidpointRounding.ToEven)gives23.579位小数可能会出来,需

c# - 为什么 .NET 在 String.Format 中使用与默认 Math.Round() 算法不一致的舍入算法?

我注意到C#/.NET中存在以下不一致之处。为什么会这样?Console.WriteLine("{0,-4:#.0}|{1,-4:#.0}",1.04,Math.Round(1.04,1));Console.WriteLine("{0,-4:#.0}|{1,-4:#.0}",1.05,Math.Round(1.05,1));Console.WriteLine("{0,-4:#.0}|{1,-4:#.0}",1.06,Math.Round(1.06,1));Console.WriteLine("{0,-4:#.0}|{1,-4:#.0}",1.14,Math.Round(1.14,1))

c# - 为什么 .NET 在 String.Format 中使用与默认 Math.Round() 算法不一致的舍入算法?

我注意到C#/.NET中存在以下不一致之处。为什么会这样?Console.WriteLine("{0,-4:#.0}|{1,-4:#.0}",1.04,Math.Round(1.04,1));Console.WriteLine("{0,-4:#.0}|{1,-4:#.0}",1.05,Math.Round(1.05,1));Console.WriteLine("{0,-4:#.0}|{1,-4:#.0}",1.06,Math.Round(1.06,1));Console.WriteLine("{0,-4:#.0}|{1,-4:#.0}",1.14,Math.Round(1.14,1))

c# - 在 C# 中向上或向下舍入值

我创建了一个在游戏结束时给出分数的游戏,但问题是这个分数有时是一个小数点后有很多数字的数字(例如87.124563563566)。我将如何向上或向下舍入该值,以便我可以得到类似87.12的值?谢谢! 最佳答案 使用Math.Ceiling(87.124563563566)或Math.Floor(87.124563563566)始终向上或向下舍入。我相信这是最接近的整数。 关于c#-在C#中向上或向下舍入值,我们在StackOverflow上找到一个类似的问题:

c# - 在 C# 中向上或向下舍入值

我创建了一个在游戏结束时给出分数的游戏,但问题是这个分数有时是一个小数点后有很多数字的数字(例如87.124563563566)。我将如何向上或向下舍入该值,以便我可以得到类似87.12的值?谢谢! 最佳答案 使用Math.Ceiling(87.124563563566)或Math.Floor(87.124563563566)始终向上或向下舍入。我相信这是最接近的整数。 关于c#-在C#中向上或向下舍入值,我们在StackOverflow上找到一个类似的问题:

c# - 在 C# 中将小数舍入到最接近的四分之一

C#中是否有一种简单的方法可以将小数四舍五入到最接近的四分之一,即x.0、x.25、x.50x.75例如0.21将四舍五入为0.25,5.03将四舍五入为5.0在此先感谢您的帮助。 最佳答案 乘以四,round它是你需要的一个整数,然后再除以四:x=Math.Round(x*4,MidpointRounding.ToEven)/4;舍入的各种选项及其解释可以在这个优秀的答案中找到here:-) 关于c#-在C#中将小数舍入到最接近的四分之一,我们在StackOverflow上找到一个类似